core: Convert metadata parsing API to GFile
authorColin Walters <walters@verbum.org>
Thu, 17 Nov 2011 23:36:57 +0000 (18:36 -0500)
committerColin Walters <walters@verbum.org>
Thu, 17 Nov 2011 23:36:57 +0000 (18:36 -0500)
src/libostree/ostree-core.c
src/libostree/ostree-core.h
src/libostree/ostree-repo.c

index 98d2f8a8d6b2f0f60759b17645f4db035d001e35..aa03c3c04ba08123fed25d45dff401d6c0586425 100644 (file)
@@ -395,19 +395,17 @@ ostree_set_xattrs (GFile  *f,
 }
 
 gboolean
-ostree_parse_metadata_file (const char                  *path,
+ostree_parse_metadata_file (GFile                       *file,
                             OstreeSerializedVariantType *out_type,
                             GVariant                   **out_variant,
                             GError                     **error)
 {
-  GFile *pathf = NULL;
   gboolean ret = FALSE;
   GVariant *ret_variant = NULL;
   GVariant *container = NULL;
   guint32 ret_type;
 
-  pathf = ot_util_new_file_for_path (path);
-  if (!ot_util_variant_map (pathf, G_VARIANT_TYPE (OSTREE_SERIALIZED_VARIANT_FORMAT),
+  if (!ot_util_variant_map (file, G_VARIANT_TYPE (OSTREE_SERIALIZED_VARIANT_FORMAT),
                             &container, error))
     goto out;
 
@@ -417,7 +415,8 @@ ostree_parse_metadata_file (const char                  *path,
   if (ret_type <= 0 || ret_type > OSTREE_SERIALIZED_VARIANT_LAST)
     {
       g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
-                       "Corrupted metadata object '%s'; invalid type %d", path, ret_type);
+                   "Corrupted metadata object '%s'; invalid type %d",
+                   ot_gfile_get_path_cached (file), ret_type);
       goto out;
     }
 
@@ -430,7 +429,6 @@ ostree_parse_metadata_file (const char                  *path,
     g_variant_unref (ret_variant);
   if (container != NULL)
     g_variant_unref (container);
-  g_clear_object (&pathf);
   return ret;
 }
 
index 32d4c006f90362dccc17bf96a7a5e30844e71c04..ba5320ee25d1499cb3a9444d0889664e187568ba 100644 (file)
@@ -102,7 +102,7 @@ GVariant *ostree_get_xattrs_for_file (GFile       *f,
 gboolean ostree_set_xattrs (GFile *f, GVariant *xattrs,
                             GCancellable *cancellable, GError **error);
 
-gboolean ostree_parse_metadata_file (const char                  *path,
+gboolean ostree_parse_metadata_file (GFile                       *file,
                                      OstreeSerializedVariantType *out_type,
                                      GVariant                   **out_variant,
                                      GError                     **error);
index 82f9eb8c742a199c39883208c1366feb501972c5..59258338ae288f3938a8e7c6574021b244c7fdd6 100644 (file)
@@ -1675,11 +1675,13 @@ ostree_repo_load_variant (OstreeRepo *self,
   OstreeSerializedVariantType ret_type;
   GVariant *ret_variant = NULL;
   char *path = NULL;
+  GFile *f = NULL;
 
   g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
 
   path = ostree_repo_get_object_path (self, sha256, OSTREE_OBJECT_TYPE_META);
-  if (!ostree_parse_metadata_file (path, &ret_type, &ret_variant, error))
+  f = ot_util_new_file_for_path (path);
+  if (!ostree_parse_metadata_file (f, &ret_type, &ret_variant, error))
     goto out;
 
   ret = TRUE;
@@ -1689,6 +1691,7 @@ ostree_repo_load_variant (OstreeRepo *self,
  out:
   if (ret_variant)
     g_variant_unref (ret_variant);
+  g_clear_object (&f);
   g_free (path);
   return ret;
 }